package com.luoran.bartalks.dao;

import java.util.List;

import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;

import com.luoran.bartalks.action.vo.PackingListMaterielOfExportVo;
import com.luoran.bartalks.entity.BaseInfo;
import com.luoran.bartalks.entity.biz.BtMateriel;
import com.luoran.bartalks.entity.biz.BtPackingListMateriel;

public interface IBtPackingListMaterielDao extends BaseMapper<BtPackingListMateriel> {

	// 分页
	void queryPage(PageQuery<? extends BaseInfo> pageQuery);

	// 通过箱单ID查询物料
	List<BtPackingListMateriel> getMaterielsByPackingListId(@Param("packingListId") String packingListId);

	// 根据公司ID查询箱单物料表的物料二维码
	List<String> checkMaterielQrcodeOnlyByCompanyId(@Param("companyId") String companyId);

	// 物料编码查询箱单,校验当前物料是否被引用
	List<BtPackingListMateriel> hasMateriel(@Param("materielCode") String materielCode,
			@Param("companyId") String companyId);

	// 通过箱单ID 查询容器
	List<BtPackingListMateriel> getContainerByPackingListId(@Param("packingListId") String packingListId);

	// 根据箱单物料关系id和计划id 校验当前扫描物料是否合法
	BtPackingListMateriel getItemByPackingListMaterielIdAndPlanId(@Param("id") String packingListMaterielId,
			@Param("planId") String planId);

	// 根据箱单物料二维码和公司id 校验当前扫描物料是否合法
	BtPackingListMateriel getItemByMaterielQrcodeAndCompanyId(@Param("qrcode") String qrcode,
			@Param("companyId") String companyId);

	BtPackingListMateriel getItemByPackingListMaterielIdAndCompanyId(@Param("id") String packingListMaterielId,
			@Param("companyId") String companyId);

	BtMateriel getMaterielByPackingListMaterielId(@Param("id") String packingListMaterielId,
			@Param("companyId") String companyId);

	// 通过箱单ID 查询装的物料报表使用
	List<PackingListMaterielOfExportVo> getMaterielsByPackingListIdOfExport(@Param("packingListId") String packingListId);
	
	// 根据公司ID获取二维码为唯一标识的物料信息
    List<BtPackingListMateriel> checkMaterielOfAppByCompanyId(@Param("companyId")String companyId);
    
    // 获取该用户合理的物料信息
    List<BtPackingListMateriel> getMaterielOfApp(@Param("companyId")String companyId,@Param("userId")String userId);
	
 // 根据物料二维码信息，公司ID 查询
    BtPackingListMateriel getByMaterielQrcodeAndCompanyId(@Param("materielQrcode")String materielQrcode,@Param("companyId") String companyId);
    
}
